home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / gfx / edit / AmiCAD_2.06.lha / AmiCAD / ARexx / Aligner.AmiCAD next >
Text File  |  2000-04-13  |  2KB  |  70 lines

  1. /* Alignement des éléments sélectionnés */
  2. /* Version 1.0: 23 mai 1998
  3.    Version 1.01: 13 avril 2000 (modif SAVEALL, ajout nom script en cas d'erreur)
  4. $VER: Aligner.AmiCAD 1.01 (© R.Florac, 13 avril 2000) */
  5. /* Ne gère correctement que les éléments du même type */
  6.  
  7. options results     /* indispensable pour récupérer le résultat des macros */
  8.  
  9. signal on error     /* pour l'interception des erreurs */
  10. signal on syntax
  11.  
  12. 'ALIGNEMENT=SELECT("Alignement"+CHR(10)+"En haut"+CHR(10)+"En bas"+CHR(10)+"À gauche"+CHR(10)+"À droite")'
  13. alignement=result
  14. select
  15.     when alignement=1 then ligne_base=50000
  16.     when alignement=2 then ligne_base=0
  17.     when alignement=3 then colonne_base=50000
  18.     when alignement=4 then colonne_base=0
  19.     otherwise exit
  20. end
  21.  
  22. objets=0
  23. 'FIRSTSEL'; i=result
  24. do while i>0
  25.     objets=objets+1
  26.     'LINE('i')'; ligne=result
  27.     'COL('i')'; colonne=result
  28.     'WIDTH('i')'; largeur=result
  29.     select
  30.     when alignement = 1 then do
  31.         if ligne<ligne_base then ligne_base=ligne
  32.     end
  33.     when alignement = 2 then do
  34.         if ligne>ligne_base then ligne_base=ligne
  35.     end
  36.     when alignement = 3 then do
  37.         if colonne<colonne_base then colonne_base=colonne
  38.     end
  39.     otherwise do
  40.         if colonne+largeur>colonne_base then colonne_base=colonne+largeur
  41.     end
  42.     end
  43.     'NEXTSEL('i')'; i=result
  44. end
  45.  
  46. if objets<2 then do
  47.     'MESSAGE("Sélectionnez au moins"+CHR(10)+"deux éléments avant"+CHR(10)+"d''appeler ce script")'
  48.     exit
  49. end
  50.  
  51. 'CD='colonne_base':O=FIRSTSEL'; i=result
  52. if alignement=4 then do
  53.     'SAVEALL:O=FIRSTSEL:WHILE(O,MOVE(O,CD-COL(O)-WIDTH(O),0):O=NEXTSEL(O))'
  54.     exit
  55. end
  56.  
  57. 'SAVEALL:O=FIRSTSEL:WHILE(O,IF(ALIGNEMENT<3,MOVE(O,0,'ligne_base'-LINE(O)),MOVE(O,'colonne_base'-COL(O),0)):O=NEXTSEL(O))'
  58.  
  59. exit
  60.  
  61. /* Traitement des erreurs, interruption du programme */
  62. syntax:
  63. erreur=RC
  64. 'MESSAGE("Script Aligner.AmiCAD"+CHR(10)+"Erreur de syntaxe"+CHR(10)+"en ligne 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
  65. exit
  66.  
  67. error:
  68. 'MESSAGE("Script Aligner.AmiCAD"+CHR(10)+"Erreur en ligne 'SIGL'")'
  69. exit
  70.